home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / batch / strings2.zip / BATMEN.BAT next >
DOS Batch File  |  1992-11-11  |  2KB  |  96 lines

  1. @echo off
  2. rem -------------------------------------------------------------
  3. rem
  4. rem A batch file that returns a memory scan
  5. rem BATMEM.BAT
  6. rem Copyright 1992 Douglas Boling
  7. rem
  8. rem -------------------------------------------------------------
  9. rem
  10. rem First, get the pointer to the list of lists
  11. rem
  12. strings /i /b16 iret = interrupt 21, 5200
  13. strings /b16 lloff = parse %iret%, 2
  14. strings /b16 llseg = parse %iret%, 9
  15. set iret=
  16.  
  17. rem
  18. rem First memory block kept at ListOfList - 2
  19. rem
  20. strings /b16 lloff = sub %lloff%, 2
  21. strings /b16 memseg = peek %llseg%, %lloff%, 2, 2
  22.  
  23. echo.
  24. echo  Block Owner Size Program
  25. echo  --------------------------------
  26.  
  27. strings /b16 totalmem = add %memseg%, 1
  28. set freemem=0
  29. :loop
  30.    rem
  31.    rem Parse the memory arena header
  32.    rem
  33.    strings /b16 memtype = peek %memseg%, 0, 1
  34.    strings /b16 memowner = peek %memseg%, 1, 2, 2
  35.    strings /b16 memsize = peek %memseg%, 3, 2, 2
  36.  
  37.    strings /b16 memtemp = peek %memseg%, 8, 8
  38.    strings /b16 /p  memtemp = char %memtemp%
  39.  
  40.    strings /b16 memseg = add %memseg%, 1
  41.    rem
  42.    rem If block not PSP, don't print block name
  43.    rem
  44.    set memname=
  45.    set diff=-1
  46.  
  47.    strings /b16 /q diff = sub %memseg%, %memowner%
  48.    if .%diff% == .0 goto skip1
  49.    goto skip2
  50.    :skip1
  51.       set memname=%memtemp%
  52.    :skip2
  53.  
  54.    if NOT %memowner% == 0000 goto skip3
  55.       set memowner=FREE
  56.       strings /b16 freemem = add %freemem%, %memsize%
  57.    :skip3
  58.    rem
  59.    rem OK, print the results
  60.    rem
  61.    echo  %memseg% %memowner% %memsize% %memname%
  62.  
  63.    strings /b16 memseg = add %memseg%, %memsize%
  64.    strings /b16 totalmem = add %memsize%, %totalmem%
  65.    strings /b16 totalmem = add %totalmem%, 1
  66.  
  67. if %memtype% == 4D goto loop
  68.  
  69. echo.
  70.  
  71. strings /b16 memsize = mul %memsize%, 10
  72. strings /b16 memsize = convert %memsize%, A
  73. strings memsize = addcommas %memsize%
  74.  
  75. strings /b16 totalmem = mul %totalmem%, 10
  76. strings /b16 totalmem = convert %totalmem%, A
  77. strings /u totalmem = addcommas %totalmem%
  78.  
  79. echo  %totalmem% bytes total conventional memory
  80. echo  %memsize% largest program executable size
  81. echo.
  82. rem
  83. rem Done, clean up all vars
  84. rem
  85. set llseg=
  86. set lloff=
  87. set memseg=
  88. set memowner=
  89. set memsize=
  90. set memtype=
  91. set memname=
  92. set memtemp=
  93. set freemem=
  94. set totalmem=
  95. set diff=
  96.